package br.edu.univas.es2012.view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.util.ArrayList;

import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.border.LineBorder;
import javax.swing.border.TitledBorder;

import br.edu.univas.es2012.listeners.ButtonsListener;
import br.edu.univas.es2012.listeners.CadastroPacientesListener;
import br.edu.univas.es2012.model.PacientesTO;

public class FramePacientes extends JFrame{
	private static final long serialVersionUID = 1L;
	
	private PanelDadosPacientes panelDadosPacientes;
	private PanelButtons panelButtons;
	private TitledBorder titledBorder;
	
	private ArrayList<CadastroPacientesListener> listeners = new ArrayList<CadastroPacientesListener>();
	
	public FramePacientes() {
		super("Cadastro");
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setSize(new Dimension(700, 400));
		initialize();
		setLocationRelativeTo(null);
	}

	private void initialize() {
		add(getPanelDadosPacientes(),BorderLayout.CENTER);
		add(getPanelButtons(),BorderLayout.SOUTH);
		
	}

	public PanelDadosPacientes getPanelDadosPacientes() {
		if(panelDadosPacientes == null){
			panelDadosPacientes = new PanelDadosPacientes();
			panelDadosPacientes.setBorder(getTitledBorderDados());
			
			
		}
		return panelDadosPacientes;
	}

	private PanelButtons getPanelButtons() {
		if(panelButtons == null){
			panelButtons = new PanelButtons();
			panelButtons.setBorder(getTitledBorderButtons());
			panelButtons.addButtonsListener(new ButtonsListener() {
				
				@Override
				public void gravar() {
					PacientesTO pacientesTO = getPanelDadosPacientes().getPacientesTO();
					if(pacientesTO != null){
						for(CadastroPacientesListener listener : listeners){
							listener.dadosGravados(pacientesTO);
						}
					}
					
				}
				
				@Override
				public void cancelar() {
					for(CadastroPacientesListener listener : listeners){
						listener.dadosCancelados();
					}
					
				}
			});
			
		}
		return panelButtons;
	}

		
	
	private TitledBorder getTitledBorderDados(){
		
		LineBorder lineBorder = new LineBorder(Color.BLUE);
		titledBorder = BorderFactory.createTitledBorder(lineBorder, "Dados de Cadastro");
		titledBorder.setTitleJustification(TitledBorder.LEFT);
		
		return titledBorder;
	}
	
	private TitledBorder getTitledBorderButtons(){
		
		LineBorder lineBorder = new LineBorder(Color.BLUE);
		titledBorder = BorderFactory.createTitledBorder(lineBorder, "");
		titledBorder.setTitleJustification(TitledBorder.LEFT);
		
		return titledBorder;
	}
	
	public void addCadastroPacientesListener(CadastroPacientesListener listener){
		listeners.add(listener);
		getPanelDadosPacientes().addDadosPacientes(listener);
	}
	
	
	
	
	

}
